package com.anyou.mall.order.orderServe.service;

import java.math.BigDecimal;
import java.util.List;

import com.anyou.common.core.domain.ApiResult;
import com.anyou.mall.order.orderServe.domain.OrdOrderServe;
import com.anyou.mall.order.orderServe.vo.OrderServiceLogisticsVO;
import com.anyou.mall.order.orderServe.vo.PayVo;
import org.apache.ibatis.annotations.Param;

/**
 * 订单售后Service接口
 *
 * @author ruoyi
 * @date 2022-03-23
 */
public interface IOrdOrderServeService
{
    /**
     * 查询订单售后
     *
     * @param orderServeId 订单售后主键
     * @return 订单售后
     */
    public OrdOrderServe selectOrdOrderServeByOrderServeId(Long orderServeId);

    /**
     * 查询订单售后列表
     *
     * @param ordOrderServe 订单售后
     * @return 订单售后集合
     */
    public List<OrdOrderServe> selectOrdOrderServeList(OrdOrderServe ordOrderServe);

    /**
     * 新增订单售后
     *
     * @param ordOrderServe 订单售后
     * @return 结果
     */
    public int insertOrdOrderServe(OrdOrderServe ordOrderServe);

    /**
     * 修改订单售后
     *
     * @param ordOrderServe 订单售后
     * @return 结果
     */
    public int updateOrdOrderServe(OrdOrderServe ordOrderServe);

    /**
     * 批量删除订单售后
     *
     * @param orderServeIds 需要删除的订单售后主键集合
     * @return 结果
     */
    public int deleteOrdOrderServeByOrderServeIds(Long[] orderServeIds);

    /**
     * 删除订单售后信息
     *
     * @param orderServeIds 订单售后主键
     * @return 结果
     */
    public int deleteOrdOrderServeByOrderServeId(Long[] orderServeIds);

    /**
     * 售后订单审核
     * @param serveId                 售后订单号
     * @param serveAuditStatus             审核状态
     * @param auditRemark             备注理由
     * @return
     */
    ApiResult audit(Long serveId, String serveAuditStatus, String auditRemark);

    /**
     * 售后订单完成
     * @param serveId         售后订单号
     * @return
     */
   public ApiResult finish(@Param("serveId") Long serveId);

    /**
     * 售后订单发货
     * @param serveId         售后订单编号
     * @param logisticsId      物流公司id
     * @param logisticsNo  物流单号
     * @return
     */
    ApiResult sendGoods(Long serveId, Long logisticsId,String logisticsName, String logisticsNo);

    /**
     * 产看物流信息
     * @param orderServeId
     * @return
     */
    ApiResult<OrdOrderServe> getLogisticsInfo(Long orderServeId);

    /**
     * 根据商品订单号查询原支付金额,原支付订单号
     * @param goodsOrderNo
     * @return
     */
    PayVo getYuanOrder(String goodsOrderNo);
}
